import requests
import json
from lxml import etree
import re

###json版本获取数据
url = 'https://liveapi.huya.com/moment/getMomentContent?videoId=729434225'
headers = {
    'User-Agent':
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) '
        'Gecko/20100101 Firefox/101.0'
}

# 获取的时文本的类型 也就是我们的 将我们的callback进行去掉 我们获取数据的话就会变的根据简单
'''
将我们的键值对进行取值
'''


# print(response.json())


# 这个是获取到我们的所有的视频的id

# //*//section//ul[@class="vhy-video-list clearfix"]/li/@data-vid

# 我们先找到一个 基础的网址进行决定我们如何进行爬取我们的数据

# https://v.huya.com/cat/29

#
# 视频url  'https://liveapi.huya.com/moment/getMomentContent?videoId=729434225'


# 1.获取我们的id列表

def get_response(url):
    response = requests.get(url=url, headers=headers)
    return response


def get_video_url(url):
    response = get_response(url=url)

    video_url = response.json()['data']['moment']['videoInfo']['definitions'][0]['url']
    title = response.json()['data']['moment']['title']
    return title, video_url


def save(video_url, title):
    video_content = requests.get(url=video_url, headers=headers).content
    with open('D:\\deleteAnyTime\\爬虫获取的数据\\虎牙视频\\' + title + '.mp4', mode='wb') as f:
        f.write(video_content)
        print(title + '保存成功')


def get_video_id(url):
    response = get_response(url=url)
    content = etree.HTML(response.text)
    # 有一些标签是看你不能进行识别的
    id_list = content.xpath('//*[@id="root"]/div/article/section/ul[*]/li[*]/@data-vid')
    # print(id_list)
    return id_list


# 保存数据 进行保存我们的数据
# 获取我们的视频的二进制数据(这样的数据我们的才能进行保存我们的数据)
if __name__ == '__main__':
    # 书写业务逻辑
    # (1)获取到所有的音乐id
    base_url = 'https://v.huya.com/cat/29'
    music_id = get_video_id(url=base_url)
    # 我们可以循环的创建新的url
    for id in music_id:
        # print(id)
        default_url = f'https://liveapi.huya.com/moment/getMomentContent?videoId={id}'
        # print(default_url)
        data = get_video_url(default_url)
        save(video_url=data[1], title=data[0])
